home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1995 June / MacFormat 25.iso / Shareware City / Developers / OutOfPhase1.1 Source / OutOfPhase Folder / ASTExpressionList.h < prev    next >
Text File  |  1994-05-08  |  2KB  |  60 lines

  1. /* ASTExpressionList.h */
  2.  
  3. #ifndef Included_ASTExpressionList_h
  4. #define Included_ASTExpressionList_h
  5.  
  6. /* ASTExpressionList module depends on */
  7. /* MiscInfo.h */
  8. /* Audit */
  9. /* Debug */
  10. /* Definitions */
  11. /* TrashTracker */
  12. /* Memory */
  13. /* ASTExpression */
  14. /* PcodeObject */
  15. /* CompilerRoot */
  16.  
  17. #include "PcodeObject.h"
  18. #include "CompilerRoot.h"
  19.  
  20. struct ASTExprListRec;
  21. typedef struct ASTExprListRec ASTExprListRec;
  22.  
  23. /* all memory allocated from this module is done with TrashTracker */
  24.  
  25. /* forwards */
  26. struct TrashTrackRec;
  27. struct ASTExpressionRec;
  28.  
  29. /* cons an AST expression onto a list */
  30. ASTExprListRec*            ASTExprListCons(struct ASTExpressionRec* First, ASTExprListRec* Rest,
  31.                                             struct TrashTrackRec* TrashTracker);
  32.  
  33. /* type check a list of expressions.  this returns eCompileNoError if */
  34. /* everything is ok, and the appropriate type in *ResultingDataType. */
  35. CompileErrors                TypeCheckExprList(DataTypes* ResultingDataType,
  36.                                             ASTExprListRec* ExpressionList, long* ErrorLineNumber,
  37.                                             struct TrashTrackRec* TrashTracker);
  38.  
  39. /* get the first expression */
  40. struct ASTExpressionRec*    ExprListGetFirstExpr(ASTExprListRec* ExpressionList);
  41.  
  42. /* get the tail expression list */
  43. ASTExprListRec*            ExprListGetRestList(ASTExprListRec* ExpressionList);
  44.  
  45. /* install a new first in the list */
  46. void                                ExprListPutNewFirst(ASTExprListRec* ExpressionList,
  47.                                             struct ASTExpressionRec* NewFirst);
  48.  
  49. /* generate code for an expression list that is a series of sequential expressions. */
  50. /* returns True if successful, or False if it fails. */
  51. MyBoolean                        CodeGenExpressionListSequence(struct PcodeRec* FuncCode,
  52.                                             long* StackDepthParam, ASTExprListRec* ExpressionList);
  53.  
  54. /* generate code for an argument list -- all args stay on the stack. */
  55. /* returns True if successful, or False if it fails. */
  56. MyBoolean                        CodeGenExpressionListArguments(struct PcodeRec* FuncCode,
  57.                                             long* StackDepthParam, ASTExprListRec* ExpressionList);
  58.  
  59. #endif
  60.